#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *

import lector as mapa_lector
import clase as mapa_clase
import navegador as mapa_navegador

class mapa:			# Controla todo lo referido al mapa
	def __init__(self,main):
		self.navegador = mapa_navegador.navegador() # Inicia el modulo para moverse por el mapa con las flechas, despues lo saco

	def proceso(self,main):
		self.navegador.proceso(main) # Moverse con las flechas...
		mapas = []
		if main["mapa"]["posicion"][0] + main["mapa"]["posicion"][1] < 31:			# Se fija que mapas tienen que estar cargados
			mapas.append((main["mapa"]["mapa"][0]-1,main["mapa"]["mapa"][1]-1))		# De acuerdo a la posicion del jugador
		mapas.append((main["mapa"]["mapa"][0]-1,main["mapa"]["mapa"][1]))
		mapas.append((main["mapa"]["mapa"][0],main["mapa"]["mapa"][1]-1))
		if main["mapa"]["posicion"][0] < main["mapa"]["posicion"][1]:
			mapas.append((main["mapa"]["mapa"][0]-1,main["mapa"]["mapa"][1]+1))
		mapas.append((main["mapa"]["mapa"][0],main["mapa"]["mapa"][1]))
		if main["mapa"]["posicion"][0] > main["mapa"]["posicion"][1]:
			mapas.append((main["mapa"]["mapa"][0]+1,main["mapa"]["mapa"][1]-1))
		mapas.append((main["mapa"]["mapa"][0],main["mapa"]["mapa"][1]+1))
		mapas.append((main["mapa"]["mapa"][0]+1,main["mapa"]["mapa"][1]))
		if main["mapa"]["posicion"][0] + main["mapa"]["posicion"][1] > 15:
			mapas.append((main["mapa"]["mapa"][0]+1,main["mapa"]["mapa"][1]+1))
		
		for m in mapas:								# Agrega los mapas que faltan
			if not m in main["mapa"]["mapas"]:
				main["mapa"]["mapas"][m] = mapa_clase.mapa(main,mapa_lector.leer(m),m)
		
		for m in main["mapa"]["mapas"].keys():		# Elimina lo mapas sobrantes
			if not m in mapas:
				main["mapa"]["mapas"].pop(m)
		
		for mapa in main["mapa"]["mapas"]:			# Deja a cada mapa calcular su posicion
			main["mapa"]["mapas"][mapa].proceso(main)
		
	def graficar(self,main):
		for mapa in main["mapa"]["mapas"]:			# Cada mapa se imprime en pantalla
			main["mapa"]["mapas"][mapa].graficar(main)
		
